package com.ray.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.ray.bean.HalfMaterialBean;
import com.ray.bean.MaterialTreeBean;
import com.ray.bean.MaterialTreeViewBean;
import com.ray.exception.ServiceException;

public interface StructureTreeMapper {

	/**
	 * 获取物料配置结构树
	 * @author nate
	 * @param request
	 * @param start(分页参数)
	 * @param length(分页参数)
	 * @return
	 * @throws ServiceException
	 */
	int getMaterialTreeDataCount(Map map);
	List<MaterialTreeBean> getMaterialTreeData(Map map);
	/**
	 * 获取物料配置结构树
	 * @author nate
	 * @param request
	 * @param type(类型 1 整架 2 整框 3 整腿)
	 * @param maching(加工对象)
	 * @param isReport(是否需要报工)
	 * @param isPurchase(是否需要采购)
	 * @param secondIsShow(整框整腿是否显示)
	 * @param allIsReport(整架是否显示)
	 * @param createTime(创建时间)
	 * @param id(id)
	 * @return
	 * @throws ServiceException 
	 */
	void addMaterialTreeData(Map map);
	
	/**
	 * 删除物料配置结构树
	 * @author nate
	 * @param request
	 * @param id(id)
	 * @return
	 * @throws ServiceException
	 */
	void deleteMaterialTreeData(Map map);
	/**
	 * 获取MaterialTreeBean
	 * @param map
	 * @return
	 */
	MaterialTreeBean getMaterialTreeByMap(Map map);
	/**
	 * 修改物料配置结构树
	 * @author nate
	 * @param request
	 * @param id
	 * @param isReport(是否需要报工)
	 * @param isPurchase(是否需要采购)
	 * @param secondIsShow(整框整腿是否显示)
	 * @param allIsReport(整架是否显示)
	 * @return
	 * @throws ServiceException
	 */
	void updateMaterialTreeData(Map map);
	
	
	/**
	 * 获取公司半成品物料名称
	 * @param map
	 * @return
	 */
	List<HalfMaterialBean> getCompanyHalfMaterialName(Map map);
	int getCompanyHalfMaterialNameCount(Map map);
	/**
	 * 添加物料半成品名称
	 * halfMaterialName 半成品名称
	 * @param map
	 * @return
	 */
	int addCompanyHalfMaterial(Map map);
	/**
	 * 修改半成品组合名称
	 * id id
	 * halfMaterialName 半成品名称
	 * status 状态
	 * @param map
	 */
	int updateHalfMaterialName(Map map);
	/**
	 * 获取物料半架名称
	 * loginCompany
	 * @param map
	 * @return
	 */
	List<HalfMaterialBean> getHalfMaterialNameList(Map map);
	
	/**
	 * @isUrl true
	 * 添加半架组合物料
	 * loginCompany
	 * materialType(物料类型)
	 * nameId(半架名称id)
	 * isShow(报工是否显示)
	 * @param map
	 * @return
	 */
	int  addHalfMaterialType(Map map);
	
	/**
	 * 获取半架物料类型
	 * materialType(物料类型)
	 * nameId(半架名称id)
	 * isShow(报工是否显示)
	 * @param map
	 * @return
	 */
	List<HalfMaterialBean> getHalfMaterialType(Map map);
	int getHalfMaterialTypeCount(Map map);
	/**
	 * 修改半架组合物料
	 * loginCompany
	 * isShow(报工是否显示)
	 * @param map
	 * @return
	 */
	int updateHalfMaterialType(Map map);
	/** 
	 * 删除板件组合物料
	 * id 
	 * @param map
	 * @return
	 */
	int deleteHalfMaterialType(Map map);
	
	/**
	 * 获取订单物料组合信息
	 * @param map
	 * @return
	 */
	List<HalfMaterialBean> getAutoOrderMaterialGroup(Map map);

}
